#include <QCoreApplication>
#include <iostream>
#include <time.h>
using namespace std;

int **buildmassiv(int sizem, int sizen);
int **sortmassiv(int **A, int sizem, int sizen, int poryadok);
void printmassiv(int **A,int sizem,int sizen);
void delmassiv(int **massiv, int sizem);

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    cout<<"Kolechestvo strok: ";
    int i;
    cin>>i;
    cout<<"Kolechestvo stolbcov: ";
    int j;
    cin>>j;
    int** mass=buildmassiv(i,j);
    printmassiv(mass,i,j);
    cout<<"Poryadok sortirovki(+ vozrastanie, - ubyvanie): ";
    char Az;
    cin>>Az;
    sortmassiv(mass,i,j,Az);
    printmassiv(mass,i,j);
    delmassiv(mass,i);
    return a.exec();
}

int** buildmassiv(int sizem,int sizen)
{
    srand(time(NULL));
    int** A=new int*[sizem];
    for(int i=0;i<sizem;i++)
    {
        A[i]=new int[sizen];
    }
    for(int i=0;i<sizem;i++)
    {
        for(int j=0;j<sizen;j++)
        {
            A[i][j]=rand()%100;
        }
    }
    cout<<"Massiv sozdan."<<endl;
return A;
}

int **sortmassiv(int **A,int sizem,int sizen,int poryadok)
{
    int element=0;
    int elx=0;
    int ely=0;
    int t=0;

    for(int x=0;x<sizem;x++)
    {
        for(int y=0;y<sizen;y++)
    {
        element=A[x][y];
        t=y;
        for(int i=x;i<sizem;i++)
    {
        for(int j=t;j<sizen;j++)
    {
        if(poryadok=='-')
        {
        if(element<=A[i][j])
        {
            element=A[i][j];
            elx=i;
            ely=j;
            t=0;
        }
        }
        if(poryadok=='+')
        {
        if(element>=A[i][j])
        {
            element=A[i][j];
            elx=i;
            ely=j;
            t=0;
        }
        }
    }
    }
        A[elx][ely]=A[x][y];
        A[x][y]=element;
    }
    }
    cout<<"Massiv otsortirovan."<<endl;
    return A;
}

void printmassiv(int **A,int sizem,int sizen)
{
    for(int i=0;i<sizem;i++)
    {
        for(int j=0;j<sizen;j++)
        {
            cout<<A[i][j]<<"\t";
        }
        cout<<endl;
    }
}

void delmassiv(int **massiv,int sizem)
{
    for(int i=0;i<sizem;i++)
    {
        delete massiv[i];
    }
    delete massiv;
    cout<<"Massiv udalen";
}
